4 决策树

1 决策树模型与学习

1.1 决策树模型

决策树

分类决策树模型是一种对实例分类的树形结构, 由结点, 有向边构成. 结点分为内部结点叶结点, 分别代表特征/属性, 与类. Pasted image 20240816113405.png|300

决策树的内部结点对应着分类规则, 要求互斥且完备.

2 特征选择

2.1 信息增益

表示随机变量不确定性的度量. 设 X 的概率分布为 P(X=xi)=pi,1in, 则 X 的熵定义为 H(X)=i=1npilogpi. 也可记为 H(p). 从定义可验证 0H(p)logn.

如果随机变量 (X,Y) 有联合分布 P(X=xi,Y=yj)=pij,1in,1jm, 则条件熵H(Y|X)=i=1npiH(Y|X=xi).
定义 H(Y)H(Y|X)互信息.

信息增益

特征 A 对训练集 D信息增益g(D,A)=H(D)H(D|A).

设训练集为 D, 有 K 个类 C1,,CK, 自然地 k=1K|CK|=|D|. 设特征 An 个不同的取值 {a1,,an}. 根据 A 的取值将 D 划分为 n 个子集 D1,,Dn, 自然地 i=1n|Di|=|D|. 记 Dik=DiCk. 下面给出信息增益算法

信息增益算法

输入: D,A.
输出: AD 的信息增益 g(D,A).

  1. 计算经验熵 H(D)=k=1K|Ck||D|log2|Ck||D|.
  2. 计算经验条件熵 H(D|A)=i=1n|Di||D|H(Di)=i=1n|Di||D|k=1K|Dik||Di|log2|Dik||Di|.
  3. 计算信息增益 g(D,A)=H(D)H(D|A).

我们可以从若干特征中选择信息增益最大的那个特征.

2.2 信息增益比

信息增益倾向于选择取值较多的特征. 信息增益比将会校正这个问题.

信息增益

g_{R}(D,A)=\frac{g(D,A)}{H_{A}(D)},$$ 其中根据信息增益算法, $H_{A}(D)=-\sum_{i=1}^{n}\frac{|D_{i}|}{|D|}\log_{2}\frac{|D_{i}|}{|D|}$, $n$ 是 $A$ 取值的个数.

3 决策树的生成

3.1 ID3 算法

算法的核心是在决策树各个结点上应用信息增益准则来选择特征.

ID3算法

输入: 训练集 D, 特征集 A, 阈值 ε.
输出: 决策树 T.

  1. D 的所有实例属于同一类 Ck, 则 T 为单结点树.
  2. A=, 则 T 为单结点树.
  3. 否则按照信息增益算法计算并选择信息增益最大的特征 Ag.
  4. 如果 Ag 的增益小于 ε, 则 T 为单结点树.
  5. 否则对 Ag 的每一个值 ai, 按照 Ag=aiD 分割为 Di 构建子节点.
  6. 对第 i 个子节点, 以 Di 为训练集, A{Ag} 为特征集, 递归地调用 1~5 得到子树 Ti.

该算法容易产生过拟合.

3.2 C4.5 的生成算法

信息增益换成了信息增益比, 其他没变.

C4.5的生成算法

输入: 训练集 D, 特征集 A, 阈值 ε.
输出: 决策树 T.

  1. D 的所有实例属于同一类 Ck, 则 T 为单结点树.
  2. A=, 则 T 为单结点树.
  3. 否则按照信息增益比 计算并选择信息增益最大的特征 Ag.
  4. 如果 Ag 的增益小于 ε, 则 T 为单结点树.
  5. 否则对 Ag 的每一个值 ai, 按照 Ag=aiD 分割为 Di 构建子节点.
  6. 对第 i 个子节点, 以 Di 为训练集, A{Ag} 为特征集, 递归地调用 1~5 得到子树 Ti.

4 决策树的剪枝

假设树 T 的叶节点个数为 |T|, tT 的叶结点, 上面有 Nt 个样本点, 其中 k 类样本点有 Ntk 个, Ht(T)t 的经验熵, 则损失函数定义为 (4.1)Cα(T)=t=1|T|NtHt(T)+α|T|, 其中 Ht(T)=k=1KNtkNtlogNtkNt.
把 (4.1) 的第一项记为 C(T)=t|T|NtHt(T)=t=1|T|k=1KNtklogNtkNt,Cα(T)=C(T)+α|T|.

剪枝算法

输入: 生成算法产生的树 T, α.
输出: 修建后的子树 Tα.

  1. 计算每个节点的经验熵.
  2. 递归的从树的叶结点向上回缩. 设一组叶结点回缩到父结点后整体树分别为 TB,TA, 对应的损失函数分别为 Cα(TB),Cα(TA). 如果 Cα(TA)Cα(TB), 则进行剪枝, 把父结点变成新的叶结点.
  3. 返回 2, 直到不能继续, 得到 Tα.

5 CART 算法

分类与回归树模型(classification and regression tree, CART ) 既可以用于分类也可以用于回归. 在给定 X 的条件下输出 Y 的条件概率分布. 假设了决策树是二叉树, 内部结点的取值是是/否.
大体上包含了两个部分:

  1. 生成: 用训练集生成尽可能大的决策树;
  2. 剪枝: 用测试集剪枝, 尽可能最小化损失函数.

5.1 CART 生成

5.1.1 回归树的生成

X,Y 分别为输入和输出变量, 并且 Y 是连续变量. 给定 D={(x1,y1),,(xN,yN)}.
一棵回归树对应特征空间的一个划分. 假设划分为 R1,,RM, 在每个单元 Rm 上有固定的输出值 cm, 于是回归树模型可以表示为 f(x)=m=1McmI(xRm).
此时可以用平方误差 xiRm(yif(xi))2 来衡量误差, 并希望它最小. 容易知道 c^m=ave(yi|xiRm).
接下来讨论划分. 选择第 j 个变量 x(j) 和它的值 s 作为切分变量和切分点, 定义 R1(j,s)={x|x(j)s},R2(j,s)={x|x(j)>s}. 然后求解 (5.1)minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2],
然后对固定的 j 找到最优切分点 s. 这样 c^1=ave(yi|xiR1(j,s)),c^2=ave(yi|xiR2(j,s)). 对每个区域重复上述划分过程.

最小二乘回归树生成算法

输入: D
输出: 回归树 f(x).

  1. 求解 (5.1), 找到 (j,s).
  2. 用选定的 (j,s) 划分区域, R1(j,s)={x|x(j)s},R2(j,s)={x|x(j)>s},c^m=1NmxiRm(j,s)yi,xRm,m=1,2.
  3. 继续对两个子区域调用 1, 2, 直到满足条件.
  4. 依据划分的 M 个区域 R1,,RM, 生成决策树 f(x)=m=1Mc^mI(xRm).

5.1.2 分类树的生成

Gini指数

分类问题中, 假设有 K 个类, 样本点属于第 k 类的概率为 pk, 则 Gini(p)=k=1Kpk(1pk)=1k=1Kpk2.
特别地, 二分类问题的 Gini 指数为 Gini(p)=2p(1p).
对于给定的样本集合 D, Gini(D)=1k=1K(|Ck||D|)2.

从概率意义上, 它等于从样本中采样两个点, 它们不在同一类的概率.